This disclosure relates generally to the field of computer software. More particularly, but not by way of limitation, it relates to techniques for recording information about problems that arise during execution of computer software.
Identifying and resolving problems that may arise in computer applications is of great importance to users of those applications. Some vendors have provided computer software products that are able to help in problem resolution of applications by recording real-time logs of user actions and code execution flow via instrumentation techniques such as code injection. Although such products are beneficial, they do not always record the information needed to identify and resolve the problems that occur in applications. The problem resolution products cannot record every action and every event all the time, because that would produce too much data and would greatly hurt traced application performance. Some vendors provide problem resolution products for object-oriented applications that use a “recording profile” to list which methods should be recorded. Large applications, however, where such problem resolution products would be most beneficial, may create environments with over one million methods. In such an environment, only a few hundred pre-determined methods typically are marked for recording. The other methods, may be are instrumented but are typically not recorded. Thus, problems that arise in any but the pre-determined method may occur, but the problem resolution techniques fail to record the necessary information.
Solving problems in applications in such an environment can be difficult and require significant time and resources, including a need to rerun the application possibly multiple times to attempt to reproduce the problem to try to pinpoint its root cause.